你正在 VB 加油站!

最近更新

加油站台

下载区域

文档资料收集

写流言

瞧瞧流言

友情连接

写信给俺啦

 

E  控件

E  自制

005 在程序中注册和注销 OCX 控件 98-7-20

声明(在本例子里使用的是 ComCtl32.OCX,如果是其他,使用相应的名称):
Declare Function RegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllRegisterServer" () As Long
Declare Function UnRegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllUnregisterServer" () As Long
Const ERROR_SUCCESS = &H0 

使用:

If RegComCtl32 = ERROR_SUCCESS Then
    MsgBox "Registration Successful"
Else
    MsgBox "Registration Unsuccessful"
End If

If UnRegComCtl32 = ERROR_SUCCESS Then
    MsgBox "UnRegistration Successful"
Else
    MsgBox "UnRegistration Unsuccessful"
End If  到页首

004 建立可下拉选择的属性

例如在 BorderStyle 中有以下的四个选择:
0 - None
1 - Dashed
2 - Single Line
3 - Double Line
4 - 3D
首先在控件中定义以下的集合:
Enum BorderType
    None
    Dashed
    [Single Line]
    [Double Line]
    [3D]
End Enum
然后就可以把属性的类型设置好:
Public Property Get BorderStyle() As BorderType
    Border = m_BorderStyle
End Property

Public Property Let BorderStyle(ByVal New_BorderStyle As BorderType)
    m_BorderStyle = New_BorderStyle
    PropertyChanged "BorderStyle"
End Property
到页首

003 缺省值和可选参数

VB5 加强了函数参数方面,可用以下的代码实现参数缺省:

Property Get Value(Optional index As Long = 1)
...
End Property
也可使用另一个方法(慢):

Property Get Value(Optional index As Long)
If IsMissing(index) Then index = 1
...
End Property
到页首

002 多个参数的属性

在自制的控件中,可能需要对某个属性传递多个值:

Property Let Test (arg1 As String, arg2 As String, arg3 As Integer)
End Property

'用以下的方法传递参数:
Test(arg1,arg2) = arg3到页首

001 使用数组做属性

定义一个 variant 类型的属性,即可用它来做数组。
下面定义了一个 CArray 类。

Private m_MyArray As Variant

Public Property Get MyArray() As Variant
MyArray = m_MyArray
End Property

Public Property Let MyArray(a As Variant)
    m_MyArray = a
End Property

可用以下的方法使用:

Private m_Array As CArray
Private mArr(3) As String

Private Sub Form_Load()
    Set m_Array = New CArray
    mArr(1) = "One"
    mArr(2) = "Two"
    mArr(3) = "Three"
    m_Array.MyArray = mArr()
    '或者
    'm_Array.MyArray = Array("One", "Two", "Three")
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim i As Integer
    For i = 1 To UBound(m_Array.MyArray)
        MsgBox m_Array.MyArray(i)
    Next
End Sub到页首

 

知/的/更/多 做/的/更/好